home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / amiga / sipp.lha / sipp / demo / ellipsoid.c < prev    next >
C/C++ Source or Header  |  1993-03-13  |  2KB  |  87 lines

  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #include <sipp.h>
  5. #include <primitives.h>
  6.  
  7.  
  8.  
  9. #define RESOLUTION 15
  10.  
  11. extern char *optarg;
  12.  
  13. main(argc, argv)
  14.     int    argc;
  15.     char **argv;
  16. {
  17.     FILE    *fp ;
  18.     Surf_desc surf;
  19.  
  20.     char    *imfile_name;
  21.     int      mode;
  22.     int      c;
  23.     int      size;
  24.  
  25.     imfile_name = "ellipsoid.ppm";
  26.     mode = PHONG;
  27.     size = 256;
  28.  
  29.     while ((c = getopt(argc, argv, "pgfls:")) != EOF) {
  30.         switch (c) {
  31.           case 'p':
  32.             mode = PHONG;
  33.             imfile_name = "ellipsoid.ppm";
  34.             break;
  35.  
  36.           case 'g':
  37.             mode = GOURAUD;
  38.             imfile_name = "ellipsoid.ppm";
  39.             break;
  40.  
  41.           case 'f':
  42.             mode = FLAT;
  43.             imfile_name = "ellipsoid.ppm";
  44.             break;
  45.  
  46.           case 'l':
  47.             mode = LINE;
  48.             imfile_name = "ellipsoid.pbm";
  49.             break;
  50.  
  51.           case 's':
  52.             size = atoi(optarg);
  53.             break;
  54.         }
  55.     }
  56.  
  57.     sipp_init();
  58.  
  59.     lightsource_create(1.0, 1.0, 1.0, 0.9, 0.9, 0.9, LIGHT_DIRECTION);
  60.     lightsource_create(-1.0, -1.0, 0.5, 0.4, 0.4, 0.4, LIGHT_DIRECTION);
  61.  
  62.     surf.ambient = 0.5;
  63.     surf.specular = 0.6;
  64.     surf.c3 = 0.2;
  65.     surf.color.red = 0.6;
  66.     surf.color.grn = 0.3;
  67.     surf.color.blu = 0.5;
  68.     surf.opacity.red = 1.0;
  69.     surf.opacity.grn = 1.0;
  70.     surf.opacity.blu = 1.0;
  71.     
  72.     object_add_subobj(sipp_world, sipp_ellipsoid(1.0, 2.0, 3.0, RESOLUTION,
  73.                                   &surf, basic_shader, WORLD)); 
  74.  
  75.     camera_params(sipp_camera, 10.0, 0.0, 0.0,  0.0, 0.0, 0.0,  
  76.                   0.0, 0.0, 1.0,  0.4);
  77.  
  78.     printf("Rendering, wait...");
  79.     fflush(stdout);
  80.  
  81.     fp = fopen(imfile_name, "w");
  82.     render_image_file(size, size, fp, mode, 2);
  83.     printf("Done.\n");
  84.  
  85.     exit(0);
  86. }
  87.